package browser

import (
	"context"

	"github.com/chromedp/chromedp"
)

// Browser 浏览器管理器
type Browser struct {
	headless bool
}

// NewBrowser 创建新的浏览器实例
func NewBrowser(headless bool) *Browser {
	return &Browser{
		headless: headless,
	}
}

// SetHeadless 设置是否使用无头模式
func (b *Browser) SetHeadless(headless bool) {
	b.headless = headless
}

// CreateContext 创建浏览器上下文，支持有头/无头模式
func (b *Browser) CreateContext() (context.Context, context.CancelFunc) {
	opts := append(chromedp.DefaultExecAllocatorOptions[:],
		chromedp.Flag("headless", b.headless),
		chromedp.Flag("disable-gpu", false),
		chromedp.Flag("disable-dev-shm-usage", false),
	)

	allocCtx, cancel := chromedp.NewExecAllocator(context.Background(), opts...)
	ctx, cancel2 := chromedp.NewContext(allocCtx)

	// 返回一个组合的 cancel 函数
	return ctx, func() {
		cancel2()
		cancel()
	}
}

